Android অ্যাপ্লিকেশনের জন্য Internal Storage এবং External Storage হল ডেটা সংরক্ষণের দুটি সাধারণ পদ্ধতি। এই দুটি স্টোরেজ পদ্ধতি ব্যবহার করে অ্যাপ্লিকেশন ডেটা, ফাইল, এবং মিডিয়া স্টোর করতে পারে। Internal Storage হল Android ডিভাইসের অভ্যন্তরীণ অংশ, যা শুধুমাত্র অ্যাপ্লিকেশন এবং সিস্টেম দ্বারা অ্যাক্সেস করা যায়, আর External Storage সাধারণত একটি এসডি কার্ড বা ডিভাইসের বহিরাগত স্টোরেজ অংশ যা ব্যবহারকারী বা অন্য অ্যাপ্লিকেশনও অ্যাক্সেস করতে পারে।
Internal এবং External Storage ব্যবহার
নিচে Internal এবং External Storage নিয়ে বিস্তারিত আলোচনা এবং উদাহরণ দেওয়া হলো:
১. Internal Storage
Internal Storage হল Android ডিভাইসের অভ্যন্তরীণ স্টোরেজ, যেখানে অ্যাপ্লিকেশনের ডেটা এবং ফাইল সংরক্ষণ করা হয়। এটি একটি প্রাইভেট স্টোরেজ এলাকা যা শুধুমাত্র সংশ্লিষ্ট অ্যাপ্লিকেশন অ্যাক্সেস করতে পারে। Internal Storage-এ সংরক্ষিত ডেটা অ্যাপ্লিকেশন আনইনস্টল করলে মুছে যায়।
Internal Storage ব্যবহারের বৈশিষ্ট্য:
- Private: ফাইল এবং ডেটা শুধুমাত্র অ্যাপ্লিকেশন দ্বারা অ্যাক্সেসযোগ্য।
- Secure: অন্য কোনো অ্যাপ্লিকেশন এই ডেটা দেখতে বা পরিবর্তন করতে পারে না।
- Auto-deletion: অ্যাপ্লিকেশন আনইনস্টল করলে ডেটা মুছে যায়।
উদাহরণ: Internal Storage এ ফাইল লেখা
String filename = "myfile.txt";
String fileContents = "Hello, World!";
FileOutputStream fos = null;
try {
fos = openFileOutput(filename, Context.MODE_PRIVATE);
fos.write(fileContents.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
উপরের উদাহরণে, openFileOutput() ব্যবহার করে একটি ফাইল তৈরি করা হয়েছে এবং ডেটা লেখা হয়েছে। Context.MODE_PRIVATE ফাইলটি শুধুমাত্র অ্যাপ্লিকেশনের জন্য প্রাইভেট করে রাখে।
Internal Storage থেকে ফাইল পড়া
FileInputStream fis = null;
StringBuilder stringBuilder = new StringBuilder();
try {
fis = openFileInput("myfile.txt");
int ch;
while ((ch = fis.read()) != -1) {
stringBuilder.append((char) ch);
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
String fileContent = stringBuilder.toString();
এখানে openFileInput() ব্যবহার করে ফাইলটি পড়া হয়েছে এবং তার কন্টেন্ট স্ট্রিং হিসেবে রিটার্ন করা হয়েছে।
২. External Storage
External Storage হল Android ডিভাইসের এমন একটি অংশ, যা অ্যাপ্লিকেশন, ব্যবহারকারী এবং অন্যান্য অ্যাপ্লিকেশন দ্বারা অ্যাক্সেসযোগ্য। এটি সাধারণত ডিভাইসের SD কার্ড বা অন্য কোনো বহিরাগত স্টোরেজ হতে পারে। External Storage ব্যবহার করে অ্যাপ্লিকেশন মিডিয়া ফাইল, ডকুমেন্ট, এবং অন্যান্য ফাইল সংরক্ষণ করতে পারে।
External Storage ব্যবহারের বৈশিষ্ট্য:
- Public Access: অন্যান্য অ্যাপ্লিকেশন এবং ব্যবহারকারী এই ফাইলগুলো দেখতে পারে।
- Removable: External Storage অপসারণযোগ্য হতে পারে, যেমন SD কার্ড।
- Shared Storage: বিভিন্ন অ্যাপ্লিকেশন একই External Storage এ ফাইল সংরক্ষণ করতে পারে।
External Storage এ ফাইল লেখার পূর্বশর্ত:
- Permission: External Storage এ ফাইল লেখার জন্য WRITE_EXTERNAL_STORAGE এবং READ_EXTERNAL_STORAGE পারমিশন প্রয়োজন।
- Runtime Permission (Android 6.0+): পারমিশনগুলো runtime এ ব্যবহারকারীর থেকে অনুমোদন করতে হয়।
উদাহরণ: AndroidManifest.xml এ পারমিশন যোগ করা
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
উদাহরণ: External Storage এ ফাইল লেখা
String fileName = "myExternalFile.txt";
String fileContents = "Hello, External World!";
// External Storage এর ডিরেক্টরি খুঁজে পাওয়া
File externalStorageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
File file = new File(externalStorageDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(fileContents.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
এখানে, Environment.getExternalStoragePublicDirectory() ব্যবহার করে External Storage এর DOCUMENTS ডিরেক্টরি খুঁজে পাওয়া হয়েছে এবং সেখানে একটি ফাইল তৈরি করা হয়েছে।
External Storage থেকে ফাইল পড়া
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "myExternalFile.txt");
StringBuilder stringBuilder = new StringBuilder();
try {
FileInputStream fis = new FileInputStream(file);
int ch;
while ((ch = fis.read()) != -1) {
stringBuilder.append((char) ch);
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
String fileContent = stringBuilder.toString();
এখানে, FileInputStream ব্যবহার করে External Storage থেকে ফাইলের কন্টেন্ট পড়া হয়েছে।
৩. Internal vs External Storage: পার্থক্য
| বৈশিষ্ট্য | Internal Storage | External Storage |
|---|---|---|
| Access | শুধুমাত্র অ্যাপ্লিকেশন দ্বারা অ্যাক্সেসযোগ্য | অ্যাপ্লিকেশন, ব্যবহারকারী, এবং অন্যান্য অ্যাপ্লিকেশন অ্যাক্সেস করতে পারে |
| Security | বেশি নিরাপদ এবং প্রাইভেট | কম নিরাপদ, অন্য অ্যাপ্লিকেশনও অ্যাক্সেস করতে পারে |
| Storage Location | ডিভাইসের অভ্যন্তরীণ মেমোরি | SD কার্ড বা ডিভাইসের বহিরাগত অংশ |
| Auto-deletion | অ্যাপ আনইনস্টল করলে ডেটা মুছে যায় | অ্যাপ আনইনস্টল করলে ডেটা মুছে যায় না |
| Permission Requirement | কোনো অতিরিক্ত পারমিশনের প্রয়োজন নেই | পারমিশন এবং runtime পারমিশন প্রয়োজন |
৪. Scoped Storage (Android 10 এবং পরবর্তী ভার্সন)
Android 10 এবং এর পরবর্তী ভার্সনে Scoped Storage প্রবর্তিত হয়েছে, যা অ্যাপ্লিকেশনগুলোকে External Storage এ তাদের নিজস্ব প্রাইভেট ডিরেক্টরিতে ফাইল সংরক্ষণ করতে বাধ্য করে। এটি ব্যবহারকারীর গোপনীয়তা রক্ষা করে এবং অন্য অ্যাপ্লিকেশন দ্বারা ফাইল অ্যাক্সেস রোধ করে।
Scoped Storage এ ফাইল লেখা (Android 10+)
File externalFilesDir = getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
File file = new File(externalFilesDir, "scopedFile.txt");
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write("Scoped Storage Example".getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
এখানে, getExternalFilesDir() ব্যবহার করে অ্যাপ্লিকেশনের প্রাইভেট External Storage ডিরেক্টরিতে ফাইল সংরক্ষণ করা হয়েছে।
উপসংহার
Internal Storage এবং External Storage উভয়ই Android অ্যাপ্লিকেশনের জন্য ডেটা সংরক্ষণের গুরুত্বপূর্ণ মাধ্যম। Internal Storage নিরাপদ এবং প্রাইভেট ডেটা সংরক্ষণের জন্য উপযুক্ত, যেখানে External Storage পাবলিক এবং শেয়ারেবল ফাইল সংরক্ষণের জন্য ব্যবহৃত হয়। Android এর বিভিন্ন ভার্সনে Scoped Storage এবং পারমিশন নিয়মগুলো পরিবর্তিত হয়েছে, তাই সেগুলো অনুসরণ করে স্টোরেজ ব্যবহার করতে হবে। সঠিক স্টোরেজ নির্বাচন এবং ব্যবহারের মাধ্যমে আপনি একটি নিরাপদ এবং কার্যকরী অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more